/**
 * @desc 防抖函数：一定时间内，只有最后一次操作，再过wait毫秒后才执行函数
 * @param {Function} func 函数
 * @param {Number} delay 延迟执行毫秒数
 */
function debounces(func, delay = 500) {
    let timer = null;
    return (...args) => {
        clearTimeout(timer);
        timer = setTimeout(() => {
            func.apply(this, args);
        }, delay);
    };
}

/**
 * @description 节流函数：在一定时间内，只执行一次
 * @param {Function} func 函数
 * @param {Number} wait 时间间隔
 */
const throttle = (func, wait = 500) => {
    let flag = true;
    return (...args) => {
        if (!flag) return;
        flag = false;
        setTimeout(() => {
            func.apply(this, args);
            flag = true;
        }, wait);
    };
};